<?php

/**
 * @package   auto_occasion
 * @subpackage 
 * @author    CMS
 * @copyright 2011
 * @license    All rights reserved
 **/

class annonceEquipementSrv {

    /**
     *Fonction pour afficher la liste des ?quipements
    */
      public function liste($_iOffset, $_iParPage){
          $equipement                  = jDao::get("commun~equipement");
          $condition                   = jDao::createConditions();
          $tResult['equipement']       =  $equipement->findBy($condition,$_iOffset,$_iParPage)->fetchAll();
          $tResult['nbRecords']        =  $equipement->countBy($condition);

          return $tResult;
      }


    /**
     *Fonction pour afficher les ?quipments et ses cat?gories
    */
      public function listeDetail(){

          $sql = "SELECT  lib_equipement,id_equipement from ao_equipement a";
          $jdb = jDb::getDbWidget();

          return $jdb->fetchAll($sql);
      }

    /**
     *Fonction pour afficher les équipments et ses choix
     * ?param int $id identifiant d'un ?quipement
    */
    public function listeDetailWithChoices($id = 0, $idCateg = 0){

        $sql  = " SELECT  AE.id_equipement,lib_equipement, lib_choix,AEC.id_choix, AE.id_categ_equipement FROM ao_equipement AE";
        $sql .= " LEFT JOIN ao_equipement_choix AEC ON AEC.id_equipement = AE.id_equipement";
        $sql .= " LEFT JOIN ao_choix AC ON AC.id_choix = AEC.id_choix";
        if ($idCateg)$sql .= " WHERE AE.id_categ_equipement = " . $idCateg  ;
        if ($id) $sql .= " AND AE.id_equipement = " . $id  ; 
        $sql .= " ORDER BY lib_equipement, AC.id_choix";
        
        $jdb  = jDb::getDbWidget();
        $result = $jdb->fetchAll($sql);

        return self::groupChoicesByEquipment($result);
      }

     /**
     * Fonction permettant de grouper les choix  par equipement
     * @param object $_equipement
     * @return array $tResult
     *
     */
    public static function groupChoicesByEquipment ($_equipement) {
        $tResult = array();
        if ($_equipement) {
        
            foreach ($_equipement as $k=>$item) {
                $choice_titre[] = $item->lib_choix;
                $choice_id[] = $item->id_choix;

                if (isset($_equipement[$k+1]->id_equipement)) {
                    if ($_equipement[$k+1]->id_equipement != $item->id_equipement) {

                        $result             = new stdClass();
                        $result->id_equipement  = $item->id_equipement;
                        $result->lib_equipement = $item->lib_equipement;
                        $result->id_categ_equipement = $item->id_categ_equipement;
                        $result->lib_choix = $choice_titre;
                        $result->id_choix = $choice_id;

                        array_push($tResult, $result);
                        unset($choice_titre);
                        unset($choice_id);
                    }
                } else {
                        $result             = new stdClass();
                        $result->id_equipement  = $item->id_equipement;
                        $result->lib_equipement   = $item->lib_equipement;
                        $result->id_categ_equipement = $item->id_categ_equipement;
                        $result->lib_choix = $choice_titre;
                        $result->id_choix = $choice_id;

                        array_push($tResult, $result);
                        unset($choice_titre);
                        unset($choice_id);
                }
            }
        }

        return $tResult;
    }

    /**
    * Fonction pour sauvegarder un ?quipement
    * @param object $_equipement
    */
    public function ajouter($_equipement){
      
        $dao                                = jDao::get('commun~equipement');
        $equipement                         = new stdClass();
        $equipement->lib_equipement         = $_equipement->lib_equipement;

        return  $dao->insert($equipement);
    }

    /**
     * Fonction pour sauvegarder une ?quipement
     */
      public function modifier($_equipement){

        $dao = jDao::get('commun~equipement');
        $equipement                          = $dao->get($_equipement->id);
        $equipement->lib_equipement          = $_equipement->lib_equipement;
        $equipement->id_categ_equipement     = $_equipement->id_categ_equipement;

        return  $dao->update($equipement);

       }

    /**
    * Fonction permettant d'avoir une option ? partir de son id
    * @param object $_id
    */
    public function chargeParId($_id){
      
        $dao                                  = jDao::get('commun~equipement');

        return  $dao->get($_id);
    }

    /**
     * Fonction permettant d'initialiser un objet compte
     * @param $login
     * @return object
     *
     */
    public function init () {

        return jDao::createRecord("commun~equipement");
    }


    /**
    * Fonction permettant de lister les cat?gories d'?quipements existantsc
    * 
    */
    public function getCategEquipementList(){

         $maFactory = jDao::get("commun~categ_equipement");
         $result = $maFactory->findAll();

         return $result->fetchAll();
    }

    /**
    * Fonction permettant de lister les choix d'equipements
    */
    public function getChoixList(){

        $maFactory = jDao::get("commun~choix_equipement");
        $result =  $maFactory->findAll();
        while ($row = $result->fetch()) {
             $return[] = $row->lib_choix;
        }
        return $return ;

         $maFactory = jDao::get("commun~choix_equipement");

         $result =  $maFactory->findAll();
         while ($row = $result->fetch()) {
             $return[] = $row->lib_choix;
         }

    }
    /**
    * Fonction permettant de lister les choix d'equipements
    */

      public function getChoixListWithId(){

         $maFactory = jDao::get("commun~choix_equipement");

         return $maFactory->findAll()->fetchAll();
    }


    /**
    * Fonction permettant de lister les choix ? enregistrer
    */

     public function getChoice($newChoices, $oldChoices){
         $return = new stdClass();
         $return->ids = array();
         $return->new_choices = array();

        foreach ($newChoices as $k=>$item){
            $found = false;
            foreach ($oldChoices as $itemOld){

                if ($item == $itemOld->lib_choix) {
                   $return->ids[] = $itemOld->id_choix;
                   //retirer l'item dans la liste
                   unset($newChoices[$k]);
                   $found = true;
                   break;

                }
            }
            if (!$found) $return->new_choices[] = $item;

        }
        $return->new_choices = $newChoices;

        return $return;

    }


    /**
    * Fonction permettant de retourner l'ID d'un ?quipement
    */

      public function getEquipementId($_equipement,$_categ){

         $sql = "INSERT INTO ao_equipement (lib_equipement,id_categ_equipement) VALUES ( '".$_equipement. "','".$_categ. "')";
         $cnx = jDb::getConnection();
         $cnx->exec($sql);
         $id = $cnx->lastInsertId();
         return $id;

      }

    /**
    * Fonction permettant de supprimer des enregistrement correspondants ? l'id de l'?quipement ds a table ao_equipement_choix
    */

      public function removeEquipementChoices($id){

         $sql = " DELETE FROM ao_equipement_choix  WHERE id_equipement = " . $id;
         $cnx = jDb::getConnection();
         $cnx->exec($sql);
      }


    /**
    * Fonction permettant d' inserer les choix d'un ?quipements
    */

      public function insertNewChoices($choix){
        $sql = "INSERT INTO ao_choix (lib_choix) VALUES ";
        $k = 0;
        foreach ($choix as $item) {
            $sep = (!$k)? "" : ",";
            $sql .= $sep . "('".$item."')";
            $k++;
        }
        
         $cnx = jDb::getConnection();
         return $cnx->exec($sql);
         

      }
    /**
    * Fonction permettant d' inserer les choix d'un ?quipements
    */

    public function getIdsChoixFromLibChoix($choix){
        $sql = "SELECT id_choix FROM ao_choix WHERE lib_choix IN (";
        $k = 0;
        foreach ($choix as $item)
        {
            $sep = (!$k)? "" : ",";

            $sql .= $sep . "'".$item."'";
            $k++;
        }
        $sql .= ")";
        $jdb = jDb::getDbWidget();
        $res = array();
        $row = $jdb->fetchAll($sql);
            foreach ($row as $item){
                $res[] = $item->id_choix;
            }
        
        return $res;

    }

      /**
     * Fonction pour avoir une requ?te d'ajout d'?quipement et choix dans table equipement choix 
     * @param int $idEquipement
     * @param array $idChoix
    */
    public static function insertIdEquipmentChoix($idEquipement, $idChoix){
        $query = " INSERT INTO ao_equipement_choix (id_equipement,id_choix) VALUES ";
        foreach ($idChoix as $k=>$item) {
                $sep = (!$k)? "" : ",";
                $query .= $sep . "($idEquipement, $item)";
            }
        
        $cnx = jDb::getConnection();
         return $cnx->exec($query);
    }

    /**
     * Fonction pour ajouter un ?quipement choix
     * @param object $_formule
     */
    public function ajoutEquipementChoix($_id,$_choix){
        
        $cnx     = jDb::getConnection();
        $sql     = self::getInsertChoixEquipement($_id,$_option);
        $cnx     -> exec($sql);
    }

    /**
     * Fonction pour ajouter un ?quipement choix
     * @param object $_formule
     */
    public function saveEquipementChoix($_params){
        
       $choix = array();
       foreach($_params as $k=>$val){
           if(preg_match("/textbox/i",$k) && $k){       
             array_push($choix,$val);
           }
       }
       return $choix;
    }


    /**
     * Fonction pour ajouter un ?quipement choix
     * @param object $_formule
     */
    public function InsertChoix($_params){

        }
    /*
     * Récuperation des équipements d'une annonce
     * @param int $idAnnonce
     * @return array
     */
    public static function getEquipementsByAnnonceId($idAnnonce){
        $sql  = " SELECT id_equipement  ";
        $sql .= " FROM ao_annonce_equipement_choix";
        $sql .= " WHERE id_annonce = " . $idAnnonce;

        $cnx = jDb::getConnection();
        $rs     = $cnx->query($sql);
        $res = array();
        $row = $rs->fetchAll();
        foreach ($row as $item){
            $res[] = $item->id_equipement;
        }
        
        return $res;
   }
   
   /*
     * Récuperation des choix d'equipements d'une annonce
     * @param int $idAnnonce
     * @return array
     */
    public static function getChoixEquipementsByAnnonceId($idAnnonce){
        $sql  = " SELECT id_choix  ";
        $sql .= " FROM ao_annonce_equipement_choix";
        $sql .= " WHERE id_annonce = " . $idAnnonce;

        $cnx = jDb::getConnection();
        $rs     = $cnx->query($sql);
        $res = array();
        $row = $rs->fetchAll();
        foreach ($row as $item){
            $res[] = $item->id_choix;
        }
        
        return $res;
   }

    /*
     * Fontion pour la correspondance annonce - equipements
     * param string $equipTxt
     * result stdClass $equipement
     */
    public static function genererEquipements($equipTxt){
       // print_r($equipTxt.'<br><br>');
        $idEquipements = array();
        $idChoix = array();
        $equipArray = split(",", $equipTxt);
        //parcours des equipements
        foreach ($equipArray as $key => $value) {
                        
            if(strstr($value,'direction assistée')) array_push($idEquipements, 74 );
            if(strstr($value,'airbag')) {
                array_push($idEquipements, 22 );
                if(strstr($value,'conducteur')) array_push($idChoix, 46 );
                else{
                    if(strstr($value,'1')) array_push($idChoix, 43 );
                    if(strstr($value,'2')) array_push($idChoix, 44 );
                    if(strstr($value,'3')) array_push($idChoix, 45 );
                    if(strstr($value,'4')) array_push($idChoix, 46 );
                    if(strstr($value,'5')) array_push($idChoix, 47 );
                    if(strstr($value,'6')) array_push($idChoix, 48 );
                    if(strstr($value,'7')) array_push($idChoix, 49 );
                    if(strstr($value,'8')) array_push($idChoix, 50 );
                }
            }
            if(strstr($value,'abs')) array_push($idEquipements, 53 );
            if(strstr($value,'anti-patinage')) array_push($idEquipements, 57 );
            if(strstr($value,'vitres')) {
                array_push($idEquipements, 39 );
            }
            if(strstr($value,'jantes alliage')) {
                array_push($idEquipements, 32 );
                array_push($idChoix, 25 );
            }
            if(strstr($value,'sellerie cuir')) array_push($idEquipements, 47 );
            if(strstr($value,'alarme')) array_push($idEquipements, 54 );
            if(strstr($value,'anti-brouillards')) array_push($idEquipements, 17 );
            if(strstr($value,'régulateur de vitesse')) array_push($idEquipements, 60 );
            if(strstr($value,'ordinateur de bord')) array_push($idEquipements, 75 );
            if(strstr($value,'clim')) {
                array_push($idEquipements, 19 );
                if(strstr($value,'automatique')) array_push($idChoix, 1 );
                else array_push($idChoix, 2 );
            }
            if(strstr($value,'fermeture centralisée à distance')) array_push($idEquipements, 52 );
            if(strstr($value,'rétros élec')) {
                array_push($idEquipements, 38 );
                if(strstr($value,'dégivrants')) array_push($idChoix, 23 );
                else array_push($idChoix, 24 );
            }
            if(strstr($value,'toit ouvrant')) {
                array_push($idEquipements, 79 );
                if(strstr($value,'électrique')) array_push($idChoix, 26 );
                else array_push($idChoix, 27 );
            }
            if(strstr($value,'Chargeur')) {
                array_push($idEquipements, 45 );
                if(strstr($value,'Chargeur 4 cd')) array_push($idChoix, 39 );
                else if(strstr($value,'Chargeur 5 cd')) array_push($idChoix, 40 );
                else if(strstr($value,'Chargeur 6 cd')) array_push($idChoix, 41 );
                else array_push($idChoix, 42 );
            }
            if(strstr($value,'radio')) {
                array_push($idEquipements, 44 );
                if(strstr($value,'radio k7 + cd')) array_push($idChoix, 33 );
                else if(strstr($value,'radio cd')) array_push($idChoix, 34 );
                else if(strstr($value,'radio k7')) array_push($idChoix, 32 );
            }
        }
        $equipement = new stdClass();
        $equipement->idEquip = $idEquipements;
        $equipement->idChoix = $idChoix;
        //print_r($equipement);die();
        return $equipement;
    }

    /**
     * Fo : advert 2 : récap equipement
     * @param $listeCategEquipements
     * @param $liste
     * @param $equipements
     * @param $choixEquipements
     */
    public static function getRecapEquipement ($listeCategEquipements, $liste, $equipements, $choixEquipements) {
        
        $tLibEquipement = $tChoix = $result = array();
        foreach ($listeCategEquipements as $categEquipement) {
            $categLibelle = $categEquipement->lib_categ_equipement;
            foreach ($liste as $key=>$equipement) {
                if ($equipement->id_categ_equipement == $categEquipement->id_categ_equipement) {
                    if ($equipement->lib_choix[0]) {
                        if (isset($equipements) && (in_array($equipement->id_equipement,$equipements) )) {
                            $tLibEquipement[] = $equipement->lib_equipement;
                        }

                        foreach ($equipement->lib_choix as $k=>$item) {
                            if (isset($choixEquipements) && (in_array($equipement->id_choix[$k],$choixEquipements) )) {
                                $tChoix[] = $item;
                            }
                        }
                    } else {
                        if (isset($equipements) && (in_array($equipement->id_equipement,$equipements) )) {
                            $tLibEquipement[] = $equipement->lib_equipement;
                        }
                    }
                }
            }

            $recap              = new stdClass();
            $recap->categorie   = $categLibelle;
            $recap->equipement  = $tLibEquipement;
            $result[]           = $recap;

            $tLibEquipement    = $tChoix = array();
        }

        return $result;

    }
}

